Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Phase reconstruction is invariant to voxel-size #164

Merged
merged 18 commits into from
Apr 23, 2024

Conversation

talonchandler
Copy link
Collaborator

@talonchandler talonchandler commented Apr 16, 2024

This PR is paired with a confluence page with more context.

Before: phase reconstructions varied with the square of the z step size.
After: phase density reconstructions are invariant to the z step size.

This PR:

  • changes the earlier "phase" reconstruction to a "phase density" reconstruction, which is constant as a function of voxel size. The "phase density" is comparable to a "fluorophore density" or "concentration", which does not change if you change the size of a voxel.
  • removes scaling factors for simulations and reconstructions, while leaving the reconstruction contrast unchanged
  • adds automated tests for voxel-size invariance (z and xy)

Note: this is a PR to alg-dev, a new branch from main that I will develop on for the next few PRs. My commit history is not clean (git accident), but this PR's diff is clean.

@talonchandler talonchandler marked this pull request as ready for review April 16, 2024 18:49
@talonchandler talonchandler requested a review from ziw-liu April 16, 2024 20:26
@talonchandler talonchandler requested a review from ziw-liu April 23, 2024 21:08
@ziw-liu ziw-liu added the bug Something isn't working label Apr 23, 2024
@talonchandler talonchandler merged commit 4a20aeb into alg-dev Apr 23, 2024
3 checks passed
@ziw-liu ziw-liu deleted the phase-voxel-size-invariance branch April 23, 2024 21:28
@ziw-liu ziw-liu mentioned this pull request Jul 1, 2024
talonchandler added a commit that referenced this pull request Jul 5, 2024
* Phase reconstruction is invariant to voxel-size (#164)

* fix bug finding focus in stack with only one slice

* refactor for clarify

* formatting

* print -> warnings.warn

* test single-slice case

* fix test bugs

* z-scale-invariant test object

* no rescaling on output

* forward simulation takes a "brightness" - simulating real microscope

* fix example script

* add background parameter for fluorescence forward model

* test voxel-size invariance

* rename I_norm -> direct_intensity

* refactor to clarify discretization factor

* remove comment

* fix fluorescence example bug

* improved docsring

---------

Co-authored-by: Ivan Ivanov <[email protected]>

* np.product -> np.prod

---------

Co-authored-by: Ivan Ivanov <[email protected]>
talonchandler added a commit that referenced this pull request Dec 22, 2024
* Phase reconstruction is invariant to voxel-size (#164)

* fix bug finding focus in stack with only one slice

* refactor for clarify

* formatting

* print -> warnings.warn

* test single-slice case

* fix test bugs

* z-scale-invariant test object

* no rescaling on output

* forward simulation takes a "brightness" - simulating real microscope

* fix example script

* add background parameter for fluorescence forward model

* test voxel-size invariance

* rename I_norm -> direct_intensity

* refactor to clarify discretization factor

* remove comment

* fix fluorescence example bug

* improved docsring

---------

Co-authored-by: Ivan Ivanov <[email protected]>

* poster scripting

* may 14 poster draft

* last-minute poster changes

* quick clearning

* checkpoint before svd refactor

* SVD refactor

* pass singular system

* update visualization script

* fix visualization script scaling

* correct phase recon regression, legacy recon assumes axially even green's function

* helper functions

* fluorescence wrap safety

* 3d phase wrap safety

* fix axial nyquist bug

* 2d phase wrap safety

* fix interaction between padding and wrap safety

* clean defaults

* refactor singular system computation

* remove accidental duplicate

* refactor visuals

* fix warnings from tensoring a tensor

* match defaults

* readme type

* handle napari dependency

* Revert "fix warnings from tensoring a tensor"

This reverts commit ca4e7c5.

* Reapply "fix warnings from tensoring a tensor"

This reverts commit 790df57.

* revive old version of greens tensor for backwards compatibility

* fix tests that fail because of napari on github

* wrap-safe vector transfer function

* sampling tests

* fourier-space oversampling

* better visualizations for debugging

* complex-valued napari visuals

* complex utils

* fix colormaps

* debugging coherent tfs

* formatting

* fix rotation matrices

* fix dc term

* cleaning up

* first-pass visuals checkpoint

* matplotlib visuals

* temporarily turn off rotations

* debugging progress

* example script to generate matplotlib tf figures

* add rose asset

* add all assets

* plot all stokes

* brighter plot for greens

* visual improvements

* revised rotation-symmetric Green's tensor

* ignore

* fix green's tensor units

* modify circular anisotropy gellman matrices so that all transfer function are hermitian

* improved matplotlib visuals

* clean up plotting script

* fix bug with 3x3 hardcoded shape

* update tf components

* minor reconstruction updates

* refactor greens tensor spectrum

* clean test script

* clean models

* simple memory reduction

* clean debug statements

* reorder svd for clean i/o

* invert phase contrast

* formatting

* padding warning

* revise visuals

* visual cleanup

* manage large reconstructions

* Transfer function visuals (#178)

* Bump torch to unpin numpy (#176)

* bump torch to unpin numpy

* add SPEC-0 conformant numpy requirement

* Bump torch to unpin numpy (#176)

* bump torch to unpin numpy

* add SPEC-0 conformant numpy requirement

* first-pass scripts

* cleanup greens

* clean transfer function support

* fix naming issue

* Wrap-safe transfer functions (#175)

* helper functions

* fluorescence wrap safety

* 3d phase wrap safety

* fix axial nyquist bug

* 2d phase wrap safety

* fix interaction between padding and wrap safety

* green's tensor surfaces

* dark theme default

---------

Co-authored-by: Ziwen Liu <[email protected]>

* matplotlib movie features

* cheaper default viz script

* move all visuals to /examples/visuals

* update examples/README to table

* typo

* update badges

* typo

* revise main README

* add 10-second slideshow

* Clean installation instructions

* cleanup vector model example

* minor cleanup

* remove matplotlib plot example

* edits to README

* clarify contrast mechanisms in README

* simplify example installation w/ `pip install waveorder[examples]`

* fix unintended diff

* clarify `examples/README.md`

* document 3d-to-2d transfer function

* test orthonormal bases

* fix accidental deletion

* add deprecation warnings

* remove plotting assets

* label transfer function and simulation axes

* guard type hint

* matplotlib visuals docs and type hints

* add type hints throughout models

* revert TYPE_CHECKING to strings

---------

Co-authored-by: Ivan Ivanov <[email protected]>
Co-authored-by: Ziwen Liu <[email protected]>
Co-authored-by: Shalin Mehta <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants